package erwiki.ui.app.admin.handlers.workaround1;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.emf.common.util.EList;
import org.eclipse.swt.widgets.Shell;
//import org.elwiki.admin.app.internal.bundle.AdminAppUiActivator;
//import org.elwiki.api.IApplicationSession;
//import org.elwiki.api.pagemanager.IPageManager;
//import org.elwiki.api.pageprovider.IWikiPageProvider;
import org.elwiki_data.WikiPage;

import erwiki.api.core.Engine;
import erwiki.api.pages.PageManager;
import erwiki.api.providers.PageProvider;
import jakarta.inject.Inject;

/**
 * Назначение всем страницам вики сквозной (последовательной) идентификации.
 * 
 * @author vfedorov
 */
@SuppressWarnings("unused")
public class NomalizePageIdHandler {

	private Map<String, String> oldId2NewId = new HashMap<>();

	@Inject
	Engine engine;
	
	@Execute
	public void execute(Shell shell) {
		PageManager pm = engine.getManager(PageManager.class);
		PageProvider pp = pm.getCurrentProvider();

		List<WikiPage> rootPages = pp.getRootPages();
		// recalculateId(rootPages);

		// pp.redefinePageIds(this.oldId2NewId);
	}

	private void recalculateId(List<WikiPage> pages) {
		for (WikiPage page : pages) {
			String id = page.getId();
			this.oldId2NewId.put(id, getNextPageId());
			EList<WikiPage> children = page.getChildren();
			recalculateId(children);
		}
	}

	private int identifiersCounter = 1;

	private String getNextPageId() {
		String id = String.valueOf(this.identifiersCounter);
		this.identifiersCounter++;
		return id;
	}

}
